package echecs;

import iechecs.AIterator;
import iechecs.Entree;
import entree.*;

import iechecs.FonctionPosition;
import iechecs.type.Liste;


public class Generateur
{

    private Liste<Coups> listecoups;
    private Position position;
    private Parser parser;
    private Couleur colorAnalyse;

   

    public Generateur(Parser parser)
    {
        this.parser = parser;
        position = parser.getPosition();
        listecoups = new Liste();
        search(Couleur.blanc);
        parser.affichageConsole(this);
        search(Couleur.noir);
        parser.affichageConsole(this);
        triCoups();
        parser.affichageGraphique(this);
    }

    
    public void search(Couleur color)
    {
        this.colorAnalyse = color;
        search();

    }

   
    public void search()
    {
//        Iterator<Entry<APiece, Case>> it = position.getPos_courante().entrySet().iterator();
        FonctionPosition Fpos = position.getPos_courante();
        AIterator<APiece, Case> it = Fpos.iterateur();
        Entree<APiece, Case> entree;

        APiece piece;
        Case _case;
        while (it.hasNext()) {
            entree = it.suivant();
            piece = entree.getKey();
            _case = entree.getValue();
            piece.search(this, _case);
        }
    }

   
    public void triCoups()
    {
        for (Coups coups : listecoups.getInstance()) {
            coups.getPiece().getListcoupspiece().add(coups);
        }
    }

   
    public Couleur getColorAnalyse()
    {
        return colorAnalyse;
    }

   
    public Position getPosition()
    {
        return position;
    }


    public Liste<Coups> getListecoups()
    {
        return listecoups;
    }
}
